﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Web.Services;

using Osiptel.HECO.BE;
using Osiptel.HECO.BL;

public partial class Views_Editor_Frm_Componentes : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    static String userCre = "user1";
    static String ipReg = "192.168.1.2";

    [WebMethod]
    public static List<ComponenteBE> ObtenerItems()
    {
        ComponenteBL componenteBL = new ComponenteBL();
        List<ComponenteBE> listaComponentes = new List<ComponenteBE>();
        listaComponentes = componenteBL.ObtenerTodosComponentes();
        return listaComponentes;
    }

    [WebMethod]
    public static int GuardarComponente(ComponenteBE comp, List<int> tipo, List<int> subTipo)
    {
        List<ComponentePrecioBE> lstCompPrecio = new List<ComponentePrecioBE>();
        List<ComponenteTipoBE> lstTipos = new List<ComponenteTipoBE>();
        List<ComponenteSubtipoBE> lstSubTipos = new List<ComponenteSubtipoBE>();

        ComponenteBL componenteBL = new ComponenteBL();
        comp.UsuCre = userCre;
        comp.IpReg = ipReg;
        ComponenteTipoBE nuevoCompTipo = new ComponenteTipoBE();
        ComponenteSubtipoBE nuevoCompSubTipo = new ComponenteSubtipoBE();

        for (int i = 0; i < tipo.Count; i++)
        {
            nuevoCompTipo = new ComponenteTipoBE();
            nuevoCompTipo.UsuCre = userCre;
            nuevoCompTipo.IpReg = ipReg;
            nuevoCompTipo.P05Tipo = tipo[i];
            lstTipos.Add(nuevoCompTipo);
        }

        for (int i = 0; i < subTipo.Count; i++)
        {
            nuevoCompSubTipo = new ComponenteSubtipoBE();
            nuevoCompSubTipo.UsuCre = userCre;
            nuevoCompSubTipo.IpReg = ipReg;
            nuevoCompSubTipo.P06SubTipo = subTipo[i];
            lstSubTipos.Add(nuevoCompSubTipo);
        }

        int idComponente = componenteBL.insertar(comp, lstTipos, lstSubTipos);
        return idComponente;
    }

    [WebMethod]
    public static List<ParametroDetalleBE> ListaUnidades()
    {
        ParametroDetalleBL paramDetalleBL = new ParametroDetalleBL();
        List<ParametroDetalleBE> listaParamDetalle = new List<ParametroDetalleBE>();
        listaParamDetalle = paramDetalleBL.ObtenerParamsById(1);//Codigo de Unidades 1
        return listaParamDetalle;
    }

    [WebMethod]
    public static List<ParametroDetalleBE> ListaClases()
    {
        ParametroDetalleBL paramDetalleBL = new ParametroDetalleBL();
        List<ParametroDetalleBE> listaParamDetalle = new List<ParametroDetalleBE>();
        listaParamDetalle = paramDetalleBL.ObtenerParamsById(7);//Codigo de Unidades 7
        return listaParamDetalle;
    }
    [WebMethod]
    public static List<ParametroDetalleBE> ListaTipos()
    {
        ParametroDetalleBL paramDetalleBL = new ParametroDetalleBL();
        List<ParametroDetalleBE> listaParamDetalle = new List<ParametroDetalleBE>();
        listaParamDetalle = paramDetalleBL.ObtenerParamsById(5);//Codigo de Unidades 7
        return listaParamDetalle;
    }
    [WebMethod]
    public static List<TipoSubtipoBE> ListaSubTipos(int idTipo)
    {
        TipoSubtipoBL objSubTipos = new TipoSubtipoBL();
        List<TipoSubtipoBE> listaSubTipos = new List<TipoSubtipoBE>();
        listaSubTipos = objSubTipos.ObtenerSubTipoByTipo(idTipo);
        return listaSubTipos;
    }

    [WebMethod]
    public static List<ParametroDetalleBE> ListaSubTipos()
    {
        ParametroDetalleBL paramDetalleBL = new ParametroDetalleBL();
        List<ParametroDetalleBE> listaParamDetalle = new List<ParametroDetalleBE>();
        listaParamDetalle = paramDetalleBL.ObtenerParamsById(6);
        return listaParamDetalle;
    }

    [WebMethod]
    public static List<ParametroDetalleBE> ListaFuentes()
    {
        ParametroDetalleBL paramDetalleBL = new ParametroDetalleBL();
        List<ParametroDetalleBE> listaParamDetalle = new List<ParametroDetalleBE>();
        listaParamDetalle = paramDetalleBL.ObtenerParamsById(2);
        return listaParamDetalle;
    }
    [WebMethod]
    public static List<ComponentePrecioBE> ObtenerPrecioComponente(int idComponente)
    {
        ComponentePrecioBL componentePrecioBL = new ComponentePrecioBL();
        List<ComponentePrecioBE> listaComponentePrecio = new List<ComponentePrecioBE>();
        listaComponentePrecio = componentePrecioBL.ObtenerPrecioPorComp(idComponente);
        return listaComponentePrecio;
    }

    [WebMethod]
    public static string GuardarPrecioComponente(List<ComponentePrecioBE> precios, int idComponente)
    {
        string rpta = "";
        ComponentePrecioBL componentePrecioBL = new ComponentePrecioBL();
        for (int i = 0; i < precios.Count; i++)
        {
            precios[i].IdComponente = idComponente;
            precios[i].UsuCre = userCre;
            precios[i].IpReg = ipReg;
            if (componentePrecioBL.insertar(precios[i]) > 0)
                rpta = "OK";
            else
                rpta = "";
        }
        return rpta;
    }

    [WebMethod]
    public static string DatosAExcel(List<ComponenteBE> datos, String tipo)
    {
        String rpta = "";
        ExcelApp excelApp = new ExcelApp();
        if (tipo == "0")
        {
            rpta = excelApp.GenerarExcelComponentes(datos);
        }
        if (tipo == "1")
        {
            rpta = excelApp.GenerarExcelComponentesPublicos(datos);
        }
        return rpta;
    }
    protected void lkb_descargar_Click(object sender, EventArgs e)
    {
        string filename = nombreExcel.Value;
        string path = System.Web.HttpContext.Current.Server.MapPath("~/ArchivosInversiones//" + filename);
        System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
        response.ClearContent();
        response.Clear();
        response.ContentType = "text/plain";
        response.AddHeader("Content-Disposition", "attachment; filename=" + filename + ";");
        response.TransmitFile(path);
        response.Flush();
        response.End();
    }
}